package com.flying.oop.classmember.blockorder;


import com.flying.oop.classmember.block.Student;

/**
 * @ClassName:   BlockOrder
 * @author: flying
 * @date  2024/12/11 09:40
 * @Description: 测试代码块的执行顺序
 */
public class BlockOrder {

    public static void main(String[] args) {

        //  类的初始化
        /*
            (1)  给静态成员变量设置默认值
           （2） 给静态成员变量赋值以及执行静态代码块（按照代码顺序依次执行）
        */



        /*
            Father类被初始化了
            我是son里的静态代码块
            printY();  null
            printX();  hello
        */
//        System.out.println(Son.x);





        // 对象的初始化
        /**
         * 1. 给成员变量设置默认值
         * 2. 执行构造方法的super()，对父类空间进行初始化
         * 3. 执行构造代码块以及给成员变量赋值
         * 4. 执行构造方法里的其他代码
         */

        /**
         *   Father类被初始化了
         *   我是son里的静态代码块
         *   打印的值是" + y   null
         *   打印的值是" + x   hello
         *   TODO:Father的构造代码块被调用了
         *   TODO:Father的构造方法被调用了
         *   对象初始化:构造代码块被调用了
         *   10
         *   0
         *   Son构造方法被调用了
         */
        Son son = new Son();



    }

}
